In computing, a virtual machine (VM) is an emulation of a particular computer system. Virtual machines operate based on the computer architecture and functions of a real or hypothetical computer, and mechanisms that implement virtual machines may include specialized hardware, software, or firmware.
A hypervisor or virtual machine manager (VMM) is a piece of computer software, firmware or hardware that creates and runs a plurality of virtual machines. A computer on which a hypervisor is running one or more virtual machines may be referred to as a host machine. Each virtual machine may be referred to as a guest machine. The hypervisor presents the guest operating systems with a virtual operating platform and manages the execution of the guest operating systems. A plurality of instances of a variety of operating systems may share virtualized hardware resources.
The virtualized hardware resources shared by the plurality of instances of the variety of operating systems may include one or more solid state drives. A solid state drive (SSD) is a data storage device that uses integrated circuit assemblies as memory to store data persistently. SSDs have no moving mechanical components and this distinguishes SSDs from traditional electromechanical magnetic disks, such as, hard disk drives (HDDs) or floppy disks, which contain spinning disks and movable read/write heads. Compared to electromechanical disks, SSDs are typically more resistant to physical shock, run silently, have lower access time, and less latency. Many type of SSDs use NAND-based flash memory which retains data without power and is a type of non-volatile storage technology.
SSDs operate on entire blocks of memory. Before writing to a memory cell, flash memory needs to be erased, which requires the application of a large voltage to the memory cells, which can only happen to an entire memory cell block at once. For example, if 1 KB of data is to be written to an SSD with an erase block size of 128 KB, the SSD needs to read 127 KB from the target block, erase the block and write the old data plus the new data back into the block. SSD firmware may pre-erase blocks and try to write new data into these pre-erased blocks.